//
//  DMBannerSceneManager.h
//  DualMediationSDK
//
//  Created by DualMediation on 2024/01/01.
//  Copyright © 2024 DualMediation. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "DMBannerTypes.h"

NS_ASSUME_NONNULL_BEGIN

@class DMBannerManager;
@class DualMediationMAXBannerManager;

/**
 * Banner广告场景管理器
 * 负责管理Banner场景配置和展示逻辑
 */
@interface DMBannerSceneManager : NSObject

/**
 * 单例实例
 */
+ (instancetype)sharedManager;

/**
 * 设置Banner广告管理器（IronSource）
 */
@property (nonatomic, weak) DMBannerManager *ironSourceManager;

/**
 * 设置Banner广告管理器（MAX）
 */
@property (nonatomic, weak) DualMediationMAXBannerManager *maxManager;

/**
 * 是否启用场景管理器
 */
@property (nonatomic, assign) BOOL sceneManagerEnabled;

/**
 * 展示Banner广告（推荐使用，基于后端策略）
 * @param sceneName 场景名称
 */
- (void)showBannerForScene:(NSString *)sceneName;

/**
 * 展示Banner广告（新增接口，参考Android SDK设计）
 * @param sceneValue 场景值
 * @param position Banner位置
 * @param enableShortScreenDetection 是否启用短屏检测
 */
- (void)showBannerAd:(NSString *)sceneValue
            position:(BannerPosition)position
enableShortScreenDetection:(BOOL)enableShortScreenDetection;

/**
 * 展示Banner广告（场景化，兼容原有接口）
 * @param sceneName 场景名称
 * @param position Banner位置
 * @param enableShortScreenDetection 是否启用短屏检测
 * @param containerView 容器视图（可选）
 * @return 是否成功发起展示
 */
- (BOOL)showBannerForScene:(NSString *)sceneName
                  position:(BannerPosition)position
    enableShortScreenDetection:(BOOL)enableShortScreenDetection
             containerView:(UIView * _Nullable)containerView;

/**
 * 隐藏Banner广告
 * @param sceneName 场景名称
 */
- (void)hideBannerForScene:(NSString *)sceneName;

/**
 * 检查Banner广告是否准备就绪
 * @param sceneName 场景名称
 * @return 是否准备就绪
 */
- (BOOL)isBannerReadyForScene:(NSString *)sceneName;

/**
 * 预加载Banner广告
 * @param sceneName 场景名称
 * @return 是否成功发起预加载
 */
- (BOOL)preloadBannerForScene:(NSString *)sceneName;

/**
 * 销毁Banner广告
 * @param sceneName 场景名称
 */
- (void)destroyBannerForScene:(NSString *)sceneName;

/**
 * 更新当前关卡（用于策略条件判断）
 * @param level 当前关卡数
 */
- (void)updateCurrentLevel:(NSInteger)level;

/**
 * 获取当前关卡
 * @return 当前关卡数
 */
- (NSInteger)getCurrentLevel;

/**
 * 记录Banner展示事件（用于统计和策略判断）
 * @param sceneName 场景名称
 */
- (void)recordBannerShowForScene:(NSString *)sceneName;

/**
 * 检查场景是否满足展示条件
 * @param sceneName 场景名称
 * @return 是否满足条件
 */
- (BOOL)canShowBannerForScene:(NSString *)sceneName;

/**
 * 获取场景的Banner位置配置
 * @param sceneName 场景名称
 * @return Banner位置枚举
 */
- (BannerPosition)getBannerPositionForScene:(NSString *)sceneName;

/**
 * 获取场景是否启用短屏检测
 * @param sceneName 场景名称
 * @return 是否启用短屏检测
 */
- (BOOL)isShortScreenDetectionEnabledForScene:(NSString *)sceneName;

/**
 * 清除所有场景缓存数据
 */
- (void)clearAllSceneData;

@end

NS_ASSUME_NONNULL_END
